package net.hn.hnms.biz.process.service;

import net.hn.hnms.biz.process.domain.StartWorkPo;
import net.hn.hnms.biz.process.domain.dto.*;
import net.hn.hnms.biz.process.domain.vo.StartWorkDataVo;
import net.hn.hnms.sys.common.core.domain.ResponsePage;
import net.hn.hnms.sys.common.mybatis.core.page.PageQuery;

import java.util.List;

/**
 * @InterfaceName: StartProcessService
 * @Description 开工管理服务
 * @Author 王龙
 * @Date 2022-09-24
 * @Version 0.1
 */
public interface StartProcessService {
    /**
     * 开工管理添加
     * @param startWorkPo
     * @return
     */
    boolean customizationAdd(StartWorkPo startWorkPo);

    /**
     * 开工管理修改
     * @param startWorkPo
     * @return
     */
    boolean customizationUpdate(StartWorkPo startWorkPo);

    /**
     * 开工管理批量删除
     * @param idList
     * @return
     */
    boolean customizationDelete(List<String> idList);

    /**
     * 分页条件查询开工管理列表
     * @param pageQuery
     * @param startWorkPo
     * @return
     */
    ResponsePage<StartWorkPo> customizationPageList(PageQuery pageQuery, StartWorkPo startWorkPo);

    /**
     * 开工管理审批流程设置
     * @param startWorkFlowDto
     * @return
     */
    Boolean addApproveAdd(StartWorkFlowDto startWorkFlowDto);

    /**
     * 根据开工管理ID获取审批序号列表
     * @param id
     * @return
     */
    StartWorkFlowDto approveById(String id);

    /**
     * 开工管理状态修改
     * @param id
     * @return
     */
    Boolean amendStatusById(String id);

    /**
     * 开工管理审批流程修改
     * @param startWorkFlowDto
     * @return
     */
    Boolean addApproveUpdate(StartWorkFlowDto startWorkFlowDto);

    /**
     * 零星工程-添加
     * @param startWorkDataDto
     * @return
     */
    Boolean projectAdd(StartWorkDataDto startWorkDataDto);

    /**
     * 零星工程-分页条件查询
     * @param pageQuery
     * @param startWorkDataDto
     * @return
     */
    ResponsePage<StartWorkDataVo> projectPageList(PageQuery pageQuery, StartDataDto startWorkDataDto);

    /**
     * 完成审批
     * @param businessKey
     * @param is
     * @param approve
     * @param content
     * @return
     */
    Boolean accomplishApprove(String businessKey, Boolean is, String approve, String content);

    /**
     * 撤销审批
     * @param id
     * @return
     */
    Boolean revocationApproveById(String id);

    /**
     * 根据零星工程DataID获取审批序号列表
     * @param id
     * @return
     */
    StartFlowDataDto approveDataById(String id);

    /**
     * 零星工程-批量删除
     * @param idList
     * @return
     */
    Boolean projectDelete(List<String> idList);

    /**
     * 零星工程-From表单修改
     * @param fromUpdateDto
     * @return
     */
    Boolean fromUpdate(FromUpdateDto fromUpdateDto);

    /**
     * 获取我的审批列表
     * @return
     */
    List<StartWorkDataVo> myApprove(String mineCode);
}
